/*
//
//              INTEL CORPORATION PROPRIETARY INFORMATION
//  This software is supplied under the terms of a license  agreement or
//  nondisclosure agreement with Intel Corporation and may not be copied
//  or disclosed except in  accordance  with the terms of that agreement.
//    Copyright (c) 2007-2008 Intel Corporation. All Rights Reserved.
//
//
*/

#ifndef __UMC_AVS_ENC_PIC_H
#define __UMC_AVS_ENC_PIC_H

#include "umc_avs_pic.h"
#include "umc_avs_list.h"

namespace UMC
{

// forward declaration of used classes
class AVSEncSlice;

class AVSEncFrame : public AVSListElement<AVSFrame>
{
public:
    // Default constructor
    AVSEncFrame(void);
    // Destructor
    virtual
    ~AVSEncFrame(void);

    // Initialize the object
    virtual
    Status Init(void);

    // Assign video plane pointers to a slice
    virtual
    void AssignVideoPlanes(AVSSlice *pSlice);

    // Set planes pointers to slices,
    // distribute them to field.
    virtual
    Status SetSlices(void);

protected:
    // Release the object
    void Close(void);

    void *m_pvSrcVideoPlane;                                    // (void *) pointer to allocated source video plane
    size_t m_srcBufSize;                                        // (size_t) size of allocated source video plane buffer
};

} // namespace UMC

#endif // __UMC_AVS_ENC_PIC_H
